草庐IT

c++ - QML Qt openUrlExternally

全部标签

c++ - while 循环是否总是占用全部 CPU 资源?

我需要创建一个服务器端游戏循环,问题是如何限制循环cpu使用。根据我的编程经验,繁忙的循环总是尽可能地占用最大的CPU使用率。但是我正在阅读SDL(SimpleDirectMediaLayer)的代码,它有一个函数SDL_Delay(UINT32ms),它有一个while循环,它是否占用最大cpu使用率,如果不是,为什么?https://github.com/eddieringle/SDL/blob/master/src/timer/unix/SDL_systimer.c#L137-158do{errno=0;#ifHAVE_NANOSLEEPtv.tv_sec=elapsed.tv_

c++ - 主要开源项目使用哪些 GCcflags来控制 C 和 C++ 中的未定义行为?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。主要的开源项目使用一些GCcflags来解决编译器在处理未定义行为时感知到的过度渴望,特别是在C和C++语言中。例如:-fno-strict-aliasing是那些在输入双关时想要“传统”行为的人的主要工具。例如:https://lkml.org/lkml/2003/2/26/158-fwrapv通常在想要知道签名溢出的行为时使用。例如:http://a

c++ - 如何让 emacs 像对待 '{' 和 '}' 一样对待#ifdef 和#endif?

我希望emacs在缩进方面将“#ifdef”完全像“{”一样,将“#endif”像“}”一样。像这样:#ifdef__linux__#include#endifintfunc(void){intfoo=0;#ifdefDO_STUFFfoo=do_stuff();#endifreturnfoo;}代替:#ifdef__linux__#include#endifintfunc(void){intfoo=0;#ifdefDO_STUFFfoo=do_stuff();#endifreturnfoo;}乱用“cpp-macro”并不能解决问题。我该怎么做?谢谢! 最

c++ - 函数作为参数 vs 函数指针作为参数

一边听斯坦福大学的ProgrammingAbstractions当然,我遇到了一些如下所示的代码。voidplot(doublestart,doubleend,double(fn)(double)){doublei;for(i=start;i我在我的系统上使用GCC编译了代码,然后是G++;它们都运行完美。我知道传递inti=2进入函数,例如voidfunc1(inta)将制作一份新拷贝i在传递&i时为该函数至voidfunc2(int*a)只会给出函数func2i的地址.谁能给我解释一下传递fn的机制是什么?至plot它与将函数指针作为参数传递有何不同?

c++ - 什么时候 sizeof(myPOD) 太大而无法在 x64 上按值传递?

我预计对于最大8字节的结构没有什么不同,但是更大的POD类型呢?当类型的大小超过机器字大小时,按值传递是否会变得更昂贵,或者是否有其他因素(如缓存行大小)会影响性能?我主要对x64感兴趣,但也可以随意包含一些x86的数字。说明:我可能想得太狭隘了,因为我不知道在其中发挥作用的所有因素(寄存器、调用约定、编译器优化)。我主要对Microsoft的C++编译器感兴趣,它只使用__fastcall。我感兴趣的是,在了解架构、类型大小、缓存大小等参数传递方面,是否有任何一般性建议。例如:“当类型小于N字节时,最好按值传递类型。“其中N是可以从我们已知的事物中推导出来的事物。

c++ - 为 Visual Studio 安装 openCV 2.4 for C/C++

我一整天都在尝试为C/C++的Windows7上的VisualStudio2010安装OpenCV(版本2.4.1和2.4.2)。我一直在关注本教程:http://docs.opencv.org/trunk/doc/tutorials/introduction/windows_install/windows_install.html我跳过了安装第3方软件(python2.7和zlib除外:http://gnuwin32.sourceforge.net/packages/zlib.htm)。我运行cmake,然后从openCV构建目录打开openCV.sln,等待visualstudio

c++ - 使用按位运算符的算术运算符

很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭10年前。有没有办法通过使用ONLY按位运算符来执行加法(或算术运算)?

c++ - 使用我自己的源目录生成 vs2010 项目文件

在我的大多数C++项目中,我想使用与VisualStudio默认目录结构不同的目录结构。即:/project/build#putvisualstudiosoluationandprojectfiles/src#onlyputthec++headerfilesandsourcefiles/bin#putthetargetexecutablefiles/debug/release/tmp/debug/release每次我在vs2010中创建一个解决方案时,我都会配置这些目录(例如OutputDirectory),但现在我对此感到很无聊。那么有没有工具可以根据我的config文件自动生成vs

c++ - printf 的渐近复杂度

假设我正在打印一个字符串,如下所示:printf("%s",s);我们可以假设这个函数的渐近复杂度是多少?它是O(n),其中n是strlen(s)-它是长度?还是以某种方式O(1),常数时间。或者有什么不同?但是,我想您需要知道printf是如何实现的。感谢任何见解!(我应该澄清一下,我说的是C而不是C++,但我怀疑它们的实现方式不同)编辑:将格式化字符串添加到printf() 最佳答案 它的复杂度是O(m+n),其中m是输入的大小,n是输出的大小。如果不像您的情况那样传递额外的参数,时间复杂度为O(2*m)=O(m)。但请注意您的

c++ - Recv() 调用在远程主机终止后挂起

我的问题是我有一个正在调用recv()的线程。远程主机突然终止(没有close()套接字调用)并且recv()调用继续阻塞。这显然不好,因为当我加入线程以关闭进程(本地)时,该线程将永远不会退出,因为它正在等待永远不会到来的recv。所以我的问题是人们通常认为哪种方法是处理此问题的最佳方法?在回答之前还应了解一些其他注意事项:我无法确保远程主机在退出之前关闭套接字。此解决方案不能使用外部库(例如boost)。它必须使用C++/C的标准库/功能(最好不是特定于C++0x的)。我知道过去可能有人问过这个问题,但我想让别人知道如何正确地纠正这个问题(而不是做一些我过去会做的super骇人听闻